package oo.day06;

public class InnerClassDemo {

	public static void main(String[] args) {
		Mama m = new Mama();
//		Baby b = new Baby();//内部类对外不具备可见性
	}

}

/*内部类：
 * 1）成员内部类：不太常用
 * 	1.1）类中套类，外面的叫外部类，里面的叫内部类
 *  1.2）内部类同行只服务于外部类，对外不具备可见性
 *  1.3）内部类对象通常是在外部类中创建
 *  1.4）内部类中可以直接访问外部类的成员
 * 2）匿名内部类：比较常用
 * 		2.1)如果想创建一个类的对象，并且对象只被创建一次
 * 			此时该类不必命令，成为匿名内部类
 * 		2.2)匿名内部类中访问外部的数据，该数据必须是final的
 * 3）面向对象总结
 * 面向对象的三大特征：
 * 1.封装
 * 		1.1）类：封装的对象的属性和行为
 * 		1.2）方法：封装的是具体的逻辑功能
 * 		1.3）访问控制修饰符：封装的是访问权限 public、protected、默认、private
 * 2.继承
 * 		2.1）作用：避免代码重复，有利于代码的复用
 * 		2.2）父类：所有子类共有的属性和行为
 * 			 子类 ：子类所特有的属性和行为
 * 		2.3）子继承父之后，子具有：子+父
 * 		2.4）传递性/单一继承，多接口实现
 * 3.多态
 * 		3.1）意义：行为的多态、对象的多态
 * 		3.2）向上造型、强制类型转换、instanceof
 * 		3.3）多态的表现形式：重写+重载------相同之处
 * */
class Mama{//外部类
	private String name;
	Baby createBaby() {
		return new Baby();
	}
	class Baby{//内部类
		public void showMamaName() {
			System.out.println(name);
			System.out.println(Mama.this.name);
		}
	}
}

//匿名内部类：
